package net.pulseproject.router.config;

import net.pulseproject.router.config.dependency.DependencySorter;
import net.pulseproject.router.config.dependency.NaiveDependencySorter;
import net.pulseproject.router.config.instantiator.ModuleInstantiator;
import net.pulseproject.router.config.instantiator.ModuleInstantiatorImpl;
import net.pulseproject.router.config.parser.ConfigParser;
import net.pulseproject.router.config.parser.ConfigParserImpl;
import net.pulseproject.router.config.parser.LineParser;
import net.pulseproject.router.config.parser.LineParserImpl;

import com.google.inject.AbstractModule;
import com.google.inject.Scopes;

public class RouterConfigGuiceModule extends AbstractModule {

	@Override
	protected final void configure() {
		this.bind(LineParser.class).to(LineParserImpl.class).in(Scopes.SINGLETON);
		this.bind(DependencySorter.class).to(NaiveDependencySorter.class).in(Scopes.SINGLETON);
		this.bind(ConfigParser.class).to(ConfigParserImpl.class).in(Scopes.SINGLETON);
		this.bind(ModuleInstantiator.class).to(ModuleInstantiatorImpl.class).in(Scopes.SINGLETON);
	}

}
